package com.lanou3g.code0408.constructor;

/**
 * Created by dllo on 18/4/8.
 *
 *
 *  //.java => 编译(编译时 如果没写自己的构造方法,系统会新加一个无参数构造方法)成.class文件=>jvm执行.class
 */
public class Dog {
    private String name;
    private int age;

    //构造方法
    /*
    * 1.没有返回值:根本就没有写返回值的类型
    * 2.方法名与类名相同
    *
    * 构造方法只能够被new这个关键字调用,当new对象的时候,其实就是在调用构造方法,不能用对象调用构造方法
    * 比如: new Dog(); => 就是在调用public Dog(){}这个构造方法
    *      new Dog("aa") => 其实就是在调用public Dog(String name){} 这个构造方法
    * */






    /*
    *  无参构造方法:没有任何参数,方法体也是空的构造方法 public Dog(){}
    *  特殊性:1.如果我们没有写任何一个构造方法,那么系统会送我们一个无参的构造方法(我们看不见)
    *        2.但只要我们写了任何一个构造方法,那么系统送我们的无参构造方法就会被收回(不送了)
    * */
    public Dog(){
        System.out.println("这里是没有参数的构造方法");
    }

    public Dog(String name){
        this.name = name;
        System.out.println("这里是String参数的构造方法");


    }

    public Dog(String name,int age){
        this.age = age;
        this.name = name;

        System.out.println("有两个参数的构造方法");


    }
    public void Dog(){  //不是构造方法
        this.name = name;
        this.age = age;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
